//package com.example.websocketdemo.controller.realTimeData;
//
//import com.magus.jdbc.OPResultSet;
//import com.magus.opio.dto.OPConst;
//import com.magus.opio.dto.OPRow;
//import com.magus.opio.dto.OPTable;
//import com.magus.opio.dto.OPValue;
//import com.magus.opio.net.IOPConnect;
//import com.magus.opio.net.OPConnect;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.sql.ResultSetMetaData;
//import java.sql.SQLException;
//import java.sql.Types;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//
//@RestController
//@RequestMapping("/sshishi")
//public class TEST {
//    public static String user = "sis";
//    public static String password = "openplant";
//    public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//    public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
//
////    public static void main(String[] args) throws Exception {
////        queryRealtime();
////    }
//
//    /**
//     * 毫秒级时间戳插入实时
//     *
//     * @throws Exception
//     */
//    public static void insertRealtime() throws Exception {
//        IOPConnect conn = new OPConnect("192.168.2.76", 8200, 180, "sis", "openplant");
//        OPTable table = conn.createTable(OPConst.TABLE_REALTIME);
//        table.addColumn("GN");
//
//        table.addColumn("AV");
//        table.addColumn("TM", OPValue.TYPE_DOUBLE);
//
//        OPRow row = table.NewRow();
//        row.bind(0, "W3.AX.AX_1");
//        row.bind(1, Math.random() * 100);
//        long time = System.currentTimeMillis();
//        double tm = time / 1000.0;
//        row.bind(2, tm);
//        table.append(row);
//        OPResultSet rs = conn.insert(table);
//        show(rs);
//        rs.close();
//        table.destroy();//释放内存
//        conn.close();
//    }
//
//    /**
//     * 毫秒级时间戳读取实时
//     *
//     * @throws Exception
//     */
//    @GetMapping("/message")
//    public static void queryRealtime() throws Exception {
//        IOPConnect conn = new OPConnect("192.168.2.76", 8200, 180, "sis", "openplant");
//        OPTable table = conn.createTable(OPConst.TABLE_REALTIME);
//        table.addColumn("GN");
//
//        table.addColumn("AV");
//        table.addColumn("TM", OPValue.TYPE_DOUBLE);
//        String[] pns = new String[] { "W3.AX.AX_1" };
//        OPResultSet rs = conn.find(table, pns);
//        show(rs);
//        rs.close();
//        table.destroy();//释放内存
//        conn.close();
//    }
//
//    /**
//     * 毫秒级时间戳插入历史
//     *
//     * @throws Exception
//     */
//    public static void insertArchive() throws Exception {
//        IOPConnect conn = new OPConnect("192.168.2.76", 8200, 180, "sis", "openplant");
//        OPTable table = conn.createTable(OPConst.TABLE_ARCHIVE);
//        table.addColumn("GN");
//
//        table.addColumn("AV");
//        table.addColumn("TM", OPValue.TYPE_DOUBLE);
//
//        OPRow row = table.NewRow();
//        row.bind(0, "W3.AX.AX_1");
//        row.bind(1, Math.random() * 100);
//        long time = System.currentTimeMillis();
//        double tm = time / 1000.0;
//        row.bind(2, tm);
//        table.append(row);
//        OPResultSet rs = conn.insert(table);
//        show(rs);
//        rs.close();
//        table.destroy();//释放内存
//        conn.close();
//    }
//
//    /**
//     * 毫秒级时间戳读取历史
//     *
//     * @throws Exception
//     */
//    public static void queryArchive() throws Exception {
//        IOPConnect conn = new OPConnect("192.168.2.76", 8200, 180, "sis", "openplant");
//        OPTable table = conn.createTable(OPConst.TABLE_ARCHIVE);
//        table.addColumn("GN");
//
//        table.addColumn("AV");
//        table.addColumn("TM", OPValue.TYPE_DOUBLE);
//        String[] pns = new String[] { "W3.AX.AX_1" };
//        Date begin = format.parse("2021-05-10 00:00:00");
//        Date end = format.parse("2021-05-11 23:59:59");
//
//        OPResultSet rs = conn.findArchive(table, pns, begin, end, OPConst.Archive_Model.raw, 1);
//        show(rs);
//        rs.close();
//        table.destroy();//释放内存
//        conn.close();
//    }
//
//    /**
//     * 解析结果集
//     *
//     * @param rs
//     * @return
//     * @throws SQLException
//     */
//    public static int show(OPResultSet rs) throws SQLException {
//        int count = 0;
//        ResultSetMetaData rsmd = rs.getMetaData();
//        String formatStr = "%-20s";
//        for (int i = 1; i <= rsmd.getColumnCount(); i++) {
//            System.out.print(String.format(formatStr, rsmd.getColumnLabel(i).toUpperCase()) + "\t");
//            /*
//             * if (rsmd.getColumnLabel(i).equals("TM")) { System.out.println("TM:" +
//             * rsmd.getColumnType(i)); }
//             */
//        }
//
//        System.out.print("\n");
//        while (rs.next()) {
//            StringBuffer sb = new StringBuffer();
//            count++;
//            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
//                if (rsmd.getColumnType(i) == Types.TIMESTAMP) {
//                    sb.append(sdf.format(rs.getDate(i)) + "\t");
//                } else if (rsmd.getColumnType(i) == Types.BOOLEAN) {
//                    sb.append(rs.getBoolean(i) + "\t");
//                } else if (rsmd.getColumnType(i) == Types.DOUBLE) {
//                    sb.append(rs.getBytes(i));
//                } else {
//                    sb.append(String.format(formatStr, rs.getString(i)) + "\t");
//                }
//            }
//            if (sb.length() > 0) {
//                System.out.println(sb.toString());
//            }
//        }
//        return count;
//    }
//
//}